﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using FSS.Core.Controls;
using FSS.BLL.Entities;
using FSS.BLL.Services;
using FSS.BLL;
using FSS.Core.Util;

namespace SalesManagement.Controls.List
{
    public partial class ObjectForm : BaseControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindingCity();
                BindingGroup();
                BindingBank();
                BindingBranch();
            }
            this.WindowEditor.SaveClick += new EventHandler(WindowEditor_SaveClick);
        }
        void WindowEditor_SaveClick(object sender, EventArgs e)
        {
            BindingBank();
        }
        public event EventHandler SaveClick;
        private void OnSaveClick()
        {
            if (SaveClick != null)
            {
                SaveClick(this, EventArgs.Empty);
            }
        }
        protected void btnSave_Click(object sender, DirectEventArgs e)
        {
            if (CheckDataInput().Equals(true))
            {
                InsertData();
                this.winDetails.Hide();
            }
            else
                return;
            
        }
        protected void btnAddBank_Click(object sender, DirectEventArgs e)
        {
            this.WindowEditor.Show();
        }
        
        /// <summary>
        /// New Form
        /// </summary>
        public void Show()
        {
            txtObjectId.Text = "";
            this.FormWindow.Reset();
            this.winDetails.Show();
        }
        /// <summary>
        /// Update Form
        /// </summary>
        /// <param name="ID"></param>
        public void Show(int ID)
        {
            BindingBank();
            BindingCity();
            BindingGroup();
            BindingBranch();
            txtObjectId.Text = ID.ToString();
            ObjectEntity objectE = new ObjectEntity();
            ObjectService objectS = ObjectService.GetInstance();
            objectE.ObjectId = ID;
            objectE = objectS.LoadByPrimaryKey(objectE);
            if (objectE != null)
            {
                txtID.Text = objectE.ObjectCode;
                txtName.Text = objectE.ObjectName;
                txtAdress.Text = objectE.Address;
                txtPhone.Text = objectE.Phone;
                txtPhone2.Text = objectE.Phone2;
                txtMobile.Text = objectE.Mobile;
                txtTaxCode.Text = objectE.TaxCode;
                txtFax.Text = objectE.Fax;
                txtWebsite.Text = objectE.Website;
                txtEmail.Text = objectE.Email;
                txtNote.Text = objectE.Note;
                cboCity.SelectedItem.Value = objectE.CityId.ToString();
                cboGroup.SelectedItem.Value = objectE.GroupId.ToString();
                cboBank.SelectedItem.Value = objectE.BankId.ToString();
                cboBranch.SelectedItem.Value = objectE.BranchId.ToString();
                this.winDetails.Show();
            }
            else
                return;
            OnSaveClick();
        }
        /// <summary>
        /// Insert and Update Data
        /// </summary>
        private void InsertData()
        {
            ObjectEntity objectE = new ObjectEntity();
            ObjectService objectS = ObjectService.GetInstance();
            if (!string.IsNullOrEmpty(txtID.Text.Trim()))
                objectE.ObjectCode = txtID.Text;
            if (!string.IsNullOrEmpty(txtName.Text.Trim()))
                objectE.ObjectName = txtName.Text;
            if (!string.IsNullOrEmpty(txtAdress.Text.Trim()))
                objectE.Address = txtAdress.Text;
            objectE.Fax = txtFax.Text;
            if (!string.IsNullOrEmpty(txtPhone.Text.Trim()))
                objectE.Phone = txtPhone.Text;
            objectE.Phone2 = txtPhone2.Text;
            objectE.TaxCode = txtTaxCode.Text;
            objectE.Email = txtEmail.Text;
            objectE.Website = txtWebsite.Text;
            objectE.CityId = Format.ConvertToInt(cboCity.SelectedItem.Value);
            objectE.BankId = Format.ConvertToInt(cboBank.SelectedItem.Value);
            objectE.BranchId = Format.ConvertToInt(cboBranch.SelectedItem.Value);
            objectE.BankAccount = txtBankAccount.Text;
            objectE.BankAddresss = txtBandAddress.Text;
            objectE.ContactName = txtContactName.Text;
            objectE.Note = txtNote.Text;
            objectE.GroupId = Format.ConvertToInt(cboGroup.SelectedItem.Value);
            if (chkIsCustomer.Checked == true) objectE.IsCustomer = true;
            else objectE.IsCustomer = false;
            if (chkIsProvider.Checked == true) objectE.IsProvider = true;
            else objectE.IsProvider = false;
            objectE.IsActive = true;
            objectE.UpdatedDate = DateTime.Now;
            objectE.UpdatedBy = FSSContext.Current.User.EmployeeId;
            objectE.CreatedDate = DateTime.Now;
            objectE.CreatedBy = FSSContext.Current.User.EmployeeId;
            if (txtObjectId.Text.Equals(""))
            {


                objectS.Insert(objectE);
            }
            else
            {
                objectE.ObjectId = Format.ConvertToInt(txtObjectId.Text);
                objectS.Update(objectE);
            }
            OnSaveClick();
        }
        # region bindingData
        /// <summary>
        /// Lấy Data đổ vào Combobox Tỉnh thành
        /// </summary>
        private void BindingCity()
        {
            CityEntity cityE = new CityEntity();
            CityService cityS = CityService.GetInstance();
            List<CityEntity> listCity = (List<CityEntity>)cityS.LoadAll();
            if (listCity != null)
            {
                storeCity.DataSource = listCity;
                storeCity.DataBind();
                cboCity.SelectedIndex = 0;
            }
        }
        /// <summary>
        /// Lấy Data đổ vào Commbobox Ngân hàng
        /// </summary>
        private void BindingBank()
        {
            BankEntity bankE = new BankEntity();
            BankService bankS = BankService.GetInstance();
            List<BankEntity> listBank = (List<BankEntity>)bankS.LoadAll();
            if (listBank != null)
            {
                storeBank.DataSource = listBank;
                storeBank.DataBind();
                cboBank.SelectedIndex = 0;
            }
        }

        private void BindingGroup()
        {
            GroupEntity groupE = new GroupEntity();
            GroupService groupS = GroupService.GetInstance();
            List<GroupEntity> listGroup = (List<GroupEntity>)groupS.LoadAll();
            if (!listGroup.Equals(null))
             {
                 storeGroup.DataSource = listGroup;
                 storeGroup.DataBind();
                 cboGroup.SelectedIndex = 0;
             }
        }
        private void BindingBranch()
        {
            BranchEntity branchE = new BranchEntity();
            BranchService branchS = BranchService.GetInstance();
            List<BranchEntity> listBranch = (List<BranchEntity>)branchS.LoadAll();
            if (!listBranch.Equals(null))
            {
                storeBranch.DataSource = listBranch;
                storeBranch.DataBind();
                cboBranch.SelectedIndex = 0;
            }
        }
        //private void BindingCategory()
        //{
        //    CategoryEntity categoryE = new CategoryEntity();
        //    CategoryService categoryS = CategoryService.GetInstance();
        //    List<CategoryEntity> listCategory=(List<CategoryEntity>)categoryS.LoadAll();
        //    if(!listCategory.Equals(null))
        //    {
        //        storeCategory.DataSource = listCategory;
        //        storeCategory.DataBind();
        //        cboCategory.SelectedIndex = 0;
        //    }
        //}
        /// <summary>
        /// Lấy toàn bộ dữ liệu khi load Window
        /// </summary>
        private void BindingData()
        {
            ObjectEntity objectE = new ObjectEntity();
            ObjectService objectS = ObjectService.GetInstance();
            List<ObjectEntity> lstObject = (List<ObjectEntity>)objectS.LoadAll();
            if (lstObject != null)
            {
                GridStore.DataSource = lstObject;
                GridStore.DataBind();
            }
        }
        #endregion
       
        /// <summary>
        /// Kiểm tra trước khi lưu
        /// </summary>
        /// <returns></returns>
        private bool CheckDataInput()
        {
            string msg = "";
            if (txtID.Text.Trim().Equals(""))
            {
                msg += "Mã khách hàng được để trống!";
                txtID.Focus();
            }
            if (txtName.Text.Trim().Equals(""))
            {
                msg += "<br/>Tên khách hàng không được để trống";
                txtName.Focus();
            }
            if (txtAdress.Text.Trim().Equals(""))
            {
                msg += "<br/>Địa chỉ không được để trống";
                txtAdress.Focus();
            }
            if (txtPhone.Text.Trim().Equals(""))
            {
                msg += "<br/>Số điện thoại không được để trống";
                txtPhone.Focus();
            }
            if (cboCity.SelectedItem.Value.Equals(""))
            {
                msg += "<br/>Chọn Tỉnh/Thành";
            }
            if (cboBank.SelectedItem.Value.Equals(""))
            {
                msg += "<br/>Chọn Ngân hàng";
            }
            //if (cboBranch.SelectedItem.Value.Equals(""))
            //{
            //    msg += "<br/>Chọn Chi nhánh";
            //}
            if (chkIsCustomer.Checked.Equals(false) && chkIsProvider.Checked.Equals(false))
            {
                msg += "<br/>Chọn 1 trong 2: Khách hàng hoặc Nhà cung cấp";
            }

            if (!msg.Equals(""))
            {
                X.Msg.Alert("Lỗi nhập", msg + "<br/><br/>Dữ liệu nhập chưa hợp lệ<br/>Vui lòng kiểm tra lại.").Show();
                return false;
            }
            else
                return true;
        }
        public Store GridStore { get; set; }
    }
}